#ifndef STEERINGALIGNBEHAVIOUR_H
#define STEERINGALIGNBEHAVIOUR_H

#include "SteeringBehaviourOutput.h"
#include <algorithm>
#include <cmath>
#include <Tools/Tools.h>


class SteeringAlignBehaviour
{

private:
    const double m_stopRadius;
    const double m_slowRadius;

public:
    SteeringAlignBehaviour(double stopRadius, double slowRadius);
    SteeringAlignBehaviour(SteeringAlignBehaviour&  cSAB);
    SteeringAlignBehaviour& operator=(SteeringAlignBehaviour& cSAB);
    ~SteeringAlignBehaviour();

private:
    void stop(SteeringBehaviourOutput& output, double angularSpeed, double maxAngularAcc);
    void brake(SteeringBehaviourOutput& output, double angularSpeed, double maxAngularAcc, double rotation) ;

public:
    SteeringBehaviourOutput* runAlign(Vector2D orientation, double angularSpeed, double maxAngularAcc, Vector2D target) ;
};


#endif // STEERINGALIGNBEHAVIOUR_H
